from user import User
from card import Card

class ATM:
    def __init__(self,alluser):
        self.alluser = alluser

import random
def randodmiCardId(self):
    while True:
        str_data=''
        for i in range(6):
            ch = chr(random.randrange(ord('0'),ord('9') + 1))
            str_data += ch
        if not self.alluser.get(str):
            return str_data
def creatUser(self):
    name = input("请输入姓名")
    Uid = input("请输入身份证好:")
    phone = input("请输入手机号:")
    prestMoney = float(input("请输入预存金额:"))
    if prestMoney <= 0:
        print("预存款输入有误,开户失败")
        return -1
    oncePwd = input("请输入密码:")
    passWord = input("请再次输入密码:")
    if passWord != oncePwd:
        print("两次密码输入不同......")
        return -1
    print("密码设置成功，请牢记密码: %s"% passWord)
    card = Card(cardId,oncePwd,prestMoney)
    user = User(name,Uid,phone,card)
def checkpwg(self,realPwd):
    for i in range(3):
        psd2 = input("请输入密码:")
        if realPwd == psd2:
            return True
    print("密码输错三次，系统自动退出......")
    return False
def lockCard(self):
    inptcardId = input("请输入您的卡号:")
    user =self.alluser.get(inptcardId)
    if not self.alluser.get(inptcardId):
        print("此卡号不存在...锁定失败!")
        return -1
    if user.card.cardLock:
        print("该卡已经被锁定,无需再次锁定!")
    if not self.checkpwg(user.card.cardPwd):
        print("密码错误...锁定失败!!")
        return -1
    user.card.cardLock = True
    print("该卡被锁定成功!")
def searchUser(self,base=1):
    if base == 2:
        inptcardId = input("请输入转出主卡号:")
    elif base == 3:
        inptcardId = input("请输入转入卡号")
    elif base == 1:
        inptcardId = input("请输入您的卡号:")
    user = self.alluser.get(inptcardId)
    if not self.alluser.get(inptcardId):
        print("此卡号不存在...查询失败!")
        return -1
    if user.card.cardLock:
        return -1
    if not self.checkpwg(user.card.cardPwd):
        print("密码错误过多...卡已经被锁定,请解卡后使用!")
        user.card.cardLock = True
        return -1
    if not base==3:
        print("账户:%s  余额:%.2f   "%(user.card.cardId,user.card.money))
    return user
def getMoney(self):
    userTF =self.searchUser()
    if userTF !=-1:
        if userTF.card.cardId !='':
            inptMoney = float(input("请输入取款金额"))
            if inptMoney > int(userTF.card.money):
                print("输入的金额大于余额,请先查询余额")
                return -1
            userTF.card.money = float(userTF.card.money) - inptMoney
            print("取款成功!    账户:%s     余额:%2f "%
                (userTF.card.cardId,userTF.card.money))
    else:
        return -1
def saveMoney(self):
    userTF = self.searchUser()
    if userTF != -1:
        if not userTF.card.cardLock == True:
            if userTF.card.cardId != '':
                inptMoney = float(input("请输入要存入得金额:"))
                if inptMoney < 0:
                    print("请输入正确金额")
                else:
                    userTF.card.money += inptMoney
                    print("存款成功! 账户:%s 余额:%.2f "%
                        (userTF.card.cardId,userTF.card.money))
    else:
        return -1
def transferMoney(self):
    MasterTF = self.searchUser(base = 2)
    if(MasterTF == -1):
        return -1
    userTF = self.searchUser(base = 3)
    if(userTF == -1):
        return -1
    in_tr_Money = float(input("请输入转账金额:"))
    if MasterTF.card.money >= in_tr_Money:
        str = input("您确认要继续转账操作吗(y/n) ?:")
        if str.upper() == "Y":
            MasterTF.card.money -= in_tr_Money
            userTF.card.money += in_tr_Money
            print("转账成功! 账户:%s 余额:%.2f"%
                (MasterTF.card.cardId,MasterTF.card.money))
        else:
            print("转账失败，中止了操作")
    else:
        print("转账失败，余额不足! 账户:%s 余额:%.2f"%
            (MasterTF.card.cardId,MasterTF.card.money))
def unlockCard(self):
    inptcardId = input("请输入您的卡号:")
    user = self.alluser.get(inptcardId)
    while 1:
        if not self.alluser.get(inptcardId):
            print("此卡号不存在...解锁失败!")
            return -1
        elif not user.card.cardLock:
            print("该卡未被锁定，无需解锁!")
            break
        elif not self.checkpwg(user.card.cardPwd):
            print("密码错误...解锁失败!!")
            return -1
            user.card.cardLock = False
        print("该卡 解锁 成功!")
        break